package mysql

import (
	"context"
	"github.com/myblogs/models"
)

type TagDaoInterface interface {
	CreateTag(ctx context.Context, tag *models.Tags) error
	// 获取全部标签
	GetAllTags(ctx context.Context) ([]*models.Tags, error)
	GetTagByID(ctx context.Context, id int64) (*models.Tags, error)
	GetTagByName(ctx context.Context, name string) (*models.Tags, error)
}
type TagDaoImpl struct {
}

func NewTagDao() *TagDaoImpl {
	return &TagDaoImpl{}
}
func (t *TagDaoImpl) CreateTag(ctx context.Context, tag *models.Tags) error {
	return DB.WithContext(ctx).Create(tag).Error
}

// 获取全部标签
func (t *TagDaoImpl) GetAllTags(ctx context.Context) ([]*models.Tags, error) {
	var tags []*models.Tags
	err := DB.WithContext(ctx).Find(&tags).Error
	if err != nil {
		return nil, err
	}
	return tags, nil
}
func (t *TagDaoImpl) GetTagByID(ctx context.Context, id int64) (*models.Tags, error) {
	var tag models.Tags
	err := DB.WithContext(ctx).Where("tag_id = ?", id).First(&tag).Error
	if err != nil {
		return nil, err
	}
	return &tag, nil
}
func (t *TagDaoImpl) GetTagByName(ctx context.Context, name string) (*models.Tags, error) {
	var tag models.Tags
	err := DB.WithContext(ctx).Where("name = ?", name).First(&tag).Error
	if err != nil {
		return nil, err
	}
	return &tag, nil
}
